package com.shrct.businessprocess.purchase;

import com.shrct.businessprocess.budget.RCBudgetTaskStatus;
import com.shrct.businessprocess.budget.RCCost4ACTItem;
import com.shrct.businessprocess.diagnose.IDiagnoseAcceptor;
import com.shrct.businessprocess.product.RCProductMetaType;
import com.shrct.businessprocess.project.RCExchangeRate;
import com.shrct.businessprocess.project.RCProjectMoney;
import com.shrct.businessprocess.purchase.RCBaseProductPurchaseBudget;
import com.shrct.businessprocess.purchase.RCProductPurchaseRequest;
import com.shrct.businessprocess.purchase.impl.RCAnonymousProductPurchaseBudgetImpl;
import com.shrct.businessprocess.purchase.proxy.RCAnonymousProductPurchaseBudgetProxy;
import edu.fudan.mylang.pf.EntityImplementation;

@EntityImplementation(implementBy = RCAnonymousProductPurchaseBudgetImpl.class)
public interface RCAnonymousProductPurchaseBudget extends RCBaseProductPurchaseBudget {
  public abstract RCProjectMoney getNetPrice();
  
  public abstract RCAnonymousProductPurchaseBudget setNetPrice(final RCProjectMoney netPrice);
  
  public abstract Double getNetTaxRate();
  
  public abstract RCAnonymousProductPurchaseBudget setNetTaxRate(final Double netTaxRate);
  
  public abstract String getName();
  
  public abstract RCProjectMoney getContractPrice();
  
  public abstract Double getContractTaxRate();
  
  public abstract RCExchangeRate getDefaultContractExchangeRate();
  
  public abstract String getEntityName();
  
  public abstract Boolean seemsFinished();
  
  public abstract RCBudgetTaskStatus getBudgetTaskStatus();
  
  public abstract String getTypeId();
  
  public abstract void purchaseRequestAuditPassed(final RCProductPurchaseRequest purchaseRequest);
  
  public abstract RCProductMetaType getProductMetaType();
  
  public abstract Iterable<RCCost4ACTItem> getCost4ACItems();
  
  public abstract void diagnose(final IDiagnoseAcceptor acceptor);
  
  public abstract RCAnonymousProductPurchaseBudgetProxy toProxy();
}
